<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="chapter.css"?>

<chapter id="datatypes.xml">

<title>Datatype Reference Guide</title>


<para>This chapter provides a quick reference to all of the datatypes W3C XML Schema defines. Each datatype is listed with the list of its Relax NG datatype parameters (this list correspond to the list of W3C XML Schema facets available for the datatype with the exception of the <literal>whiteSpace</literal> facet which is not supported by Relax NG), as well as information about what it represents and how. For the so called "secondary datatypes" (i.e. the W3C XML Schema builtin types which are derived from another builtin type), the synopsis shows the formal definition of the type using W3C XML Schema syntax. Examples are given for all these datatypes.</para>

<refentry id="ch16-77006">
<refmeta>
<refentrytitle>xsd:anyURI</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166124"><primary>xsd:anyURI type</primary></indexterm><refname>xsd:anyURI</refname>

<refpurpose>URI (Uniform Resource Identifier). 
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:anyURI </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
<emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="anyURI" id="anyURI"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>This datatype corresponds normatively to the XLink
<literal>href</literal> attribute. Its value space includes the URIs
defined by the RFCs 2396 and 2732, but its lexical space
doesn't require the character escapes needed to
include non-ASCII characters in URIs.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Relative URIs are not "absolutized"
by W3C XML Schema. A pattern defined as:
</para>

<programlisting>&lt;data type="xsd:anyURI"&gt;
  &lt;choice"&gt;
    &lt;value type="xsd:anyURI">http://www.w3.org/TR/xmlschema-0/&lt;/value&gt;
    &lt;value type="xsd:anyURI">http://www.w3.org/TR/xmlschema-1/&lt;/value&gt;
    &lt;value type="xsd:anyURI">http://www.w3.org/TR/xmlschema-2/&lt;/value&gt;
  &lt;/choice&gt; 
&lt;/data&gt;</programlisting>


<para>should not match the <literal>href</literal> attribute in this
instance element:
</para>

<programlisting>&lt;a xml:base="http://www.w3.org/TR/" href="xmlschema-1/"&gt;
  XML Schema Part 2: Datatypes
&lt;/a&gt; </programlisting>


<para>The Recommendation states that "it is impractical
for processors to check that a value is a context-appropriate URI
reference," freeing schema processors from having to
validate the correctness of the URI.
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;define name="httpURI"&gt;
  &lt;data type="xsd:anyURI"&gt;
    &lt;param name="pattern">http://.*&lt;param&gt;
  &lt;/data&gt;
&lt;/define&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77011">
<refmeta>
<refentrytitle>xsd:base64Binary</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166125"><primary>xsd:base64Binary type</primary></indexterm><refname>xsd:base64Binary</refname>

<refpurpose>Binary content coded as "base64". 
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:base64Binary </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
<emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="base64Binary" id="base64Binary"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:base64Binary</literal> is the set of
arbitrary binary contents. Its lexical space is the same set after
base64 coding. This coding is described in Section 6.8 of RFC 2045.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>RFC 2045 has been defined to transfer binary contents over text-based
mail systems. It imposes a line break at least every 76 characters to
avoid the inclusion of arbitrary line breaks by the mail systems.
Sending base64 content without line breaks is nevertheless a common
usage for applications such as SOAP and the W3C XML Schema Working
Group. After a request from other W3C Working Groups, the W3C XML
Schema Working Group decided to remove the obligation to include
these line breaks from the constraints on the lexical space. (This
decision was made after the publication of the W3C XML Schema
Recommendation and has been included in a release of the errata.)
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;define name="picture"&gt;
  &lt;attribute name="type">
    &lt;ref name="graphicalFormat"/&gt;
  &lt;/attribute>
  &lt;data type="xsd:base64Binary"&gt;
&lt;/define&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77016">
<refmeta>
<refentrytitle>xsd:boolean</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166126"><primary>xsd:boolean type</primary></indexterm><refname>xsd:boolean</refname>

<refpurpose>Boolean (true or false). 
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:boolean </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:pattern, <emphasis>xsd:whiteSpace</emphasis> </para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="boolean" id="boolean"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:boolean</literal> is
"true" and
"false," and its lexical space
accepts true, false, and also "1"
(for true) and "0" (for false).
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>This datatype cannot be localized&#8212;for instance, to accept
"vrai" and
"faux" instead of
"true" and
"false".
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;book id="b0836217462" available="true"/&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77021">
<refmeta>
<refentrytitle>xsd:byte</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166127"><primary>xsd:byte type</primary></indexterm><refname>xsd:byte</refname>

<refpurpose>Signed value of 8 bits. 
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:short </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="byte" id="byte"&gt;
  &lt;xsd:restriction base="xsd:short"&gt;
    &lt;xsd:minInclusive value="-128"/&gt;
    &lt;xsd:maxInclusive value="127"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:byte</literal> is the integers between
-128 and 127, i.e., the signed values that can fit in a word of 8
bits. Its lexical space allows an optional sign and leading zeros
before the significant digits.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The lexical space does not allow values expressed in other numeration
bases (such as hexadecimal, octal, or binary).
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values for byte include 27, -34, +105, and 0. </para>

<para>Invalid values include 0A, 1524, and INF.</para>

</refsect1>
</refentry>

<refentry id="ch16-77026">
<refmeta>
<refentrytitle>xsd:date</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166128"><primary>xsd:date type</primary></indexterm><refname>xsd:date</refname>

<refpurpose>Gregorian calendar date. 
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:date </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="date" id="date"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>This datatype is modeled after the calendar dates defined in Chapter
5.2.1 of ISO 8601. Its value space is the set of Gregorian calendar
dates as defined by this standard; i.e., a one-day-long period of
time. Its lexical space is the ISO 8601 extended format
"[-]CCYY-MM-DD[Z|(+|-)hh:mm]" with
an optional timezone. Timezones that are not specified are considered
"undetermined."
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The basic format of ISO 8601 calendar dates
"CCYYMMDD" is not supported.
</para>

<para>The other forms of dates available in ISO 8601&#8212;ordinal dates
defined by the year and the number of the day in the year and dates
identified by calendar week and day numbers&#8212;are not supported.
</para>

<para>As the value space is defined by reference to ISO 8601, there is no
support for any calendar system other than Gregorian.
</para>

<para>As the lexical space is also defined as reference to ISO 8601, there
is no support for any localization such as different orders for date
parts or named months.
</para>

<para>The order relation between dates with and without timezone is
partial: they can be compared only outside of a +/- 14 hours
interval.
</para>

<para>There is a dissension between ISO 8601 which defines a day as a
period of time of 24 hours, and W3C XML Schema, which indicates that
a date is a "one-day long, non-periodic instance . .
. independent of how many hours this day has." Even
though technically right (some days do not last exactly 24 hours
because of leap seconds), this definition is not coherent with the
definition of <literal>xsd:duration</literal> for which a day is
always exactly 24 hours long.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include: <literal>"2001-10-26"</literal>,
<literal>"2001-10-26+02:00"</literal>,
<literal>"2001-10-26Z"</literal>,
<literal>"2001-10-26+00:00"</literal>,
<literal>"-2001-10-26"</literal>, or
<literal>"-20000-04-01"</literal>. 
</para>

<para>The following values would be invalid: <literal>"2001-10"</literal>
(all the parts must be specified), <literal>"2001-10-32"</literal>
(the days part (32) is out of range),
<literal>"2001-13-26+02:00"</literal> (the month part (13) is out of
range), or <literal>"01-10-26"</literal> (the century part is
missing).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77031">
<refmeta>
<refentrytitle>xsd:dateTime</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166129"><primary>xsd:dateTime type</primary></indexterm><refname>xsd:dateTime</refname>

<refpurpose>Instant of time (Gregorian calendar).
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:dateTime </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="dateTime" id="dateTime"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>This datatype describes instants identified by the combination of a
date and a time. Its value space is described as a
"combination of date and time of
day" in Chapter 5.4 of ISO 8601. Its lexical space
is the extended format
"[-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm]".
The timezone may be specified as
"Z" (UTC) or
"(+|-)hh:mm." Timezones that are
not specified are considered
"undetermined."
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The basic format of ISO 8601 calendar datetimes
"CCYYMMDDThhmmss" is not supported.
</para>

<para>The other forms of datetimes available in ISO 8601&#8212;ordinal
dates defined by the year and the number of the day in the year and
dates identified by calendar week and day numbers&#8212;are not
supported.
</para>

<para>As the value space is defined by reference to ISO 8601, there is no
support for any calendar system other than Gregorian.
</para>

<para>As the lexical space is also defined as reference to ISO 8601, there
is no support for any localization such as different orders for date
parts or named months.
</para>

<para>The order relation between datetimes with and without timezone is
partial: they can be compared only outside of a +/- 14 hours
interval.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values for <literal>xsd:dateTime</literal> include:
<literal>"2001-10-26T21:32:52"</literal>,
<literal>"2001-10-26T21:32:52+02:00"</literal>,
<literal>"2001-10-26T19:32:52Z"</literal>,
<literal>"2001-10-26T19:32:52+00:00"</literal>,
<literal>"-2001-10-26T21:32:52"</literal>, or
<literal>"2001-10-26T21:32:52.12679"</literal>. 
</para>

<para>The following values would be invalid:
<literal>"2001-10-26"</literal> (all the parts must be specified),
<literal>"2001-10-26T21:32"</literal> (all the parts must be
specified), <literal>"2001-10-26T25:32:52+02:00"</literal> (the hours
part (25) is out of range), or <literal>"01-10-26T21:32"</literal>
(all the parts must be specified).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77036">
<refmeta>
<refentrytitle>xsd:decimal</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166130"><primary>xsd:decimal type</primary></indexterm><refname>xsd:decimal</refname>

<refpurpose>Decimal numbers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:integer </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:fractionDigits, xsd:maxExclusive, xsd:maxInclusive,
xsd:minExclusive, xsd:minInclusive, xsd:pattern, xsd:totalDigits,
<emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="decimal" id="decimal"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para><literal>xsd:decimal</literal> is the datatype that represents the set
of all the decimal numbers with arbitrary lengths. Its lexical space
allows any number of insignificant leading and trailing zeros (after
the decimal point).
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal separator is always a point
(".") and no thousand separator may
be added. There is no support for scientific notations.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include: <literal>"123.456"</literal>,
<literal>"+1234.456"</literal>, <literal>"-1234.456"</literal>,
<literal>"-.456"</literal>, or <literal>"-456"</literal>.
</para>

<para>The following values would be invalid: <literal>"1 234.456"</literal>
(spaces are forbidden), <literal>"1234.456E+2"</literal> (scientific
notation (<literal>"E+2"</literal>) is forbidden), <literal>"+
1234.456"</literal> (spaces are forbidden), or
<literal>"+1,234.456"</literal> (delimiters between thousands are
forbidden).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77041">
<refmeta>
<refentrytitle>xsd:double</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166131"><primary>xsd:double type</primary></indexterm><refname>xsd:double</refname>

<refpurpose>IEEE 64 bit floating point.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:double </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="double" id="double"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:double</literal> is
"double" (64 bits) floating-point
numbers as defined by the IEEE. The lexical space uses a decimal
format with optional scientific notation. The match between lexical
(powers of 10) and value (powers of 2) spaces is approximate and done
on the closest value.
</para>

<para>This datatype differentiates positive (0) and negative (-0) zeros,
and includes the special values
"-INF" (negative infinity),
"INF" (positive infinity) and
"NaN" (Not a Number).
</para>

<para>Note that the lexical spaces of <literal>xsd:float</literal> and
<literal>xsd:double</literal> are exactly the same; the only
difference is the precision used to convert the values in the value
space.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal separator is always a point
(".") and no thousands separator
may be used.
</para>

</refsect1>
<refsect1>
<title>Examples</title>


<para>Valid values include: <literal>"123.456"</literal>,
<literal>"+1234.456"</literal>, <literal>"-1.2344e56"</literal>,
<literal>"-.45E-6"</literal>, <literal>"INF"</literal>,
<literal>"-INF"</literal>, or <literal>"NaN"</literal>.
</para>

<para>The following values would be invalid: <literal>"1234.4E
56"</literal> (spaces are forbidden), <literal>"1E+2.5"</literal>
(the power of 10 must be an integer), <literal>"+INF"</literal>
(positive infinity doesn't expect a sign), or
<literal>"NAN"</literal> (capitalization matters in special values).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77046">
<refmeta>
<refentrytitle>xsd:duration</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166132"><primary>xsd:duration type</primary></indexterm><refname>xsd:duration</refname>

<refpurpose>Time durations.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:duration </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="duration" id="duration"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>Durations may be expressed using all the parts of a datetime (from
year to fractions of second) and are, therefore, defined as a
"six-dimensional space." Note that
because the relation between some of these date parts (such as the
number of days in a month) is not fixed, the order relationship
between durations is only partial and the result of a comparison
between two durations may be undetermined.
</para>

<para>The lexical space of <literal>xsd:duration</literal> is the format
defined by ISO 8601 under the form
"PnYnMnDTnHnMnS," in which the
capital letters are delimiters and can be omitted when the
corresponding member is not used.
</para>

<para>Although some durations are undetermined, this is fixed as soon as a
starting point is fixed for the duration. W3C XML Schema relies on
this feature to define the algorithm to use to compare two durations.
Four datetimes have been chosen, which produce the greatest
deviations when durations are added. A duration will be considered
bigger than another when the result of its addition to these four
dates is consistently bigger than the result of the addition of the
other duration to these same four datetimes. These datetimes are:
"1696-09-01T00:00:00Z",
"1697-02-01T00:00:00Z,"
"1903-03-01T00:00:00Z," and
"1903-07-01T00:00:00Z." 
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The lexical space cannot be customized.</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"PT1004199059S"</literal>,
<literal>"PT130S"</literal>, <literal>"PT2M10S"</literal>,
<literal>"P1DT2S"</literal>, <literal>"-P1Y"</literal>, or
<literal>"P1Y2M3DT5H20M30.123S"</literal>. 
</para>

<para>The following values would be invalid: <literal>"1Y"</literal>
(leading <literal>"P"</literal> is missing), <literal>"P1S"</literal>
(<literal>"T"</literal> separator is missing),
<literal>"P-1Y"</literal> (all parts must be positive),
<literal>"P1M2Y"</literal> (parts order is significant and
<literal>Y</literal> must precede <literal>M</literal>), or
<literal>"P1Y-1M"</literal> (all parts must be positive).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77051">
<refmeta>
<refentrytitle>xsd:ENTITIES</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166133"><primary>xsd:ENTITIES type</primary></indexterm><refname>xsd:ENTITIES</refname>

<refpurpose>Whitespace separated list of unparsed entity references.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:ENTITY </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:whiteSpace </para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="ENTITIES" id="ENTITIES"&gt;
  &lt;xsd:restriction&gt;
    &lt;xsd:simpleType&gt;
      &lt;xsd:list&gt;
        &lt;xsd:simpleType&gt;
          &lt;xsd:restriction base="xsd:ENTITY"/&gt;
        &lt;/xsd:simpleType&gt;
      &lt;/xsd:list&gt;
    &lt;/xsd:simpleType&gt;
    &lt;xsd:minLength value="1"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para><literal>xsd:ENTITIES</literal> is derived by a list from
<literal>xsd:ENTITY</literal>. It represents lists of unparsed entity
references. Each part of this entity reference is a nonqualified name
(<literal>xsd:NCName</literal>) and must be declared as an unparsed
entity in an internal or external DTD.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Unparsed entities have been defined in XML 1.0 as a way to include
non-XML content in a XML document, but most of the applications
prefer to define links (such as those defined in (X)HTML to include
images or other multimedia objects).
</para>

<para>W3C XML Schema does not provide alternative ways to declare unparsed
entities. A DTD is needed to do so.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77056">
<refmeta>
<refentrytitle>xsd:ENTITY</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166134"><primary>xsd:ENTITY type</primary></indexterm><refname>xsd:ENTITY</refname>

<refpurpose>Reference to an unparsed entity.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:NCName </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:ENTITIES </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="ENTITY" id="ENTITY"&gt;
  &lt;xsd:restriction base="xsd:NCName"/&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para><literal>xsd:ENTITY</literal> is an entity reference, i.e., a
nonqualified name (<literal>xsd:NCName</literal>) that has been
declared as an unparsed entity in an internal or external DTD.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Unparsed entities are defined in XML 1.0 as a way to include non-XML
content in XML document, but most of the applications prefer to
define links (such as those defined in (X)HTML to include images or
other multimedia objects).
</para>

<para>W3C XML Schema does not provide alternative ways to declare unparsed
entities. A DTD is needed to do so.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77061">
<refmeta>
<refentrytitle>xsd:float</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166135"><primary>xsd:float type</primary></indexterm><refname>xsd:float</refname>

<refpurpose>IEEE 32 bit floating point.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:float </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="float" id="float"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:float</literal> is
"float" (32 bits) floating-point
numbers as defined by the IEEE. The lexical space uses a decimal
format with optional scientific notation. The match between lexical
(powers of 10) and value (powers of 2) spaces is approximate and is
done on the closest value.
</para>

<para>This datatype differentiates positive (0) and negative (-0) zeros,
and includes the special values
"-INF" (negative infinity),
"INF" (positive infinity), and
"NaN" (Not a Number).
</para>

<para>Note that the lexical spaces of <literal>xsd:float</literal> and
<literal>xsd:double</literal> are exactly the same; the only
difference is the precision used to convert the values in the value
space.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal separator is always a point
(".") and no thousands separator
may be added.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include: <literal>"123.456"</literal>,
<literal>"+1234.456"</literal>, <literal>"-1.2344e56"</literal>,
<literal>"-.45E-6"</literal>, <literal>"INF"</literal>,
<literal>"-INF"</literal>, or <literal>"NaN"</literal>.
</para>

<para>The following values would be invalid: <literal>"1234.4E
56"</literal> (spaces are forbidden), <literal>"1E+2.5"</literal>
(the power of 10 must be an integer), <literal>"+INF"</literal>
(positive infinity doesn't expect a sign), or
<literal>"NAN"</literal> (capitalization matters in special values).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77066">
<refmeta>
<refentrytitle>xsd:gDay</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166136"><primary>xsd:gDay type</primary></indexterm><refname>xsd:gDay</refname>

<refpurpose>Recurring period of time: monthly day.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:gDay </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="gDay" id="gDay"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:gDay</literal> is the periods of one
calendar day recurring each calendar month (such as the third of the
month); its lexical space follows the ISO 8601 syntax for such
periods (i.e., " -- -DD") with
an optional timezone.
</para>

<para>When needed, days are reduced to fit in the length of the months, so
<literal>---31</literal> would occur on the the 28th of February of
nonleap years.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The period (one month) and the duration (one day) are fixed, and no
calendars other than the Gregorian are supported.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"---01"</literal>,
<literal>"---01Z"</literal>, <literal>"---01+02:00"</literal>,
<literal>"---01-04:00"</literal>, <literal>"---15"</literal>, or
<literal>"---31"</literal>.
</para>

<para>The following values would be invalid: <literal>"--30-"</literal>
(the format must be <literal>"---DD"</literal>),
<literal>"---35"</literal> (the day is out of range),
<literal>"---5"</literal> (all the digits must be supplied), or
<literal>"15"</literal> (missing leading <literal>"---"</literal>).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77071">
<refmeta>
<refentrytitle>xsd:gMonth</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166137"><primary>xsd:gMonth type</primary></indexterm><refname>xsd:gMonth</refname>

<refpurpose>Recurring period of time: yearly month.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:gMonth </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="gMonth" id="gMonth"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:gMonth</literal> is the period of one
calendar month recurring each calendar year (such as the month of
April); its lexical space should follow the ISO 8601 syntax for such
periods (i.e., " -- MM") with an
optional timezone. However, there is a typo in the W3C XML Schema
Recommendation where the format is defined as
" -- MM --  -- . Even though an
erratum should be published to bring the W3C XML Schema inline with
ISO 8601, most of the current schema processors will expect the
(bogus) format " -- MM --  -- .
In the example, we follow the correct ISO 8601 format.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The period (one year) and the duration (one month) are fixed, and no
calendars other than the Gregorian are supported.
</para>

<para>Because of the typo in the W3C XML Schema Specification, users must
choose between a bogus format, which works on the current version of
the tools, or a correct format, which conforms to ISO 8601.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"--05"</literal>,
<literal>"--11Z"</literal>, <literal>"--11+02:00"</literal>,
<literal>"--11-04:00"</literal>, or <literal>"--02"</literal>.
</para>

<para>The following values would be invalid: <literal>"-01-"</literal> (the
format must be <literal>"--MM"</literal>), <literal>"--13"</literal>
(the month is out of range), <literal>"--1"</literal> (both digits
must be provided), or <literal>"01"</literal> (leading " -- " are
missing).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77076">
<refmeta>
<refentrytitle>xsd:gMonthDay</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166138"><primary>xsd:gMonthDay type</primary></indexterm><refname>xsd:gMonthDay</refname>

<refpurpose>Recurring period of time: yearly day.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:gMonthDay </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="gMonthDay" id="gMonthDay"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:gMonthDay</literal> is the period of
one calendar day recurring each calendar year (such as the third of
April); its lexical space follows the ISO 8601 syntax for such
periods (i.e., " -- MM-DD") with
an optional timezone.
</para>

<para>When needed, days are reduced to fit in the length of the months, so
<literal>--02-29</literal> would occur on the the 28th of February of
nonleap years.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The period (one year) and the duration (one day) are fixed, and no
calendars other than the Gregorian are supported.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"--05-01"</literal>,
<literal>"--11-01Z"</literal>, <literal>"--11-01+02:00"</literal>,
<literal>"--11-01-04:00"</literal>, <literal>"--11-15"</literal>, or
<literal>"--02-29"</literal>. 
</para>

<para>The following values would be invalid: <literal>"-01-30-"</literal>
(the format must be <literal>"--MM-DD"</literal>),
<literal>"--01-35"</literal> (the day part is out of range),
<literal>"--1-5"</literal> (the leading zeros are missing), or
<literal>"01-15"</literal> (the leading <literal>"--"</literal> are
missing).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77081">
<refmeta>
<refentrytitle>xsd:gYear</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166139"><primary>xsd:gYear type</primary></indexterm><refname>xsd:gYear</refname>

<refpurpose>Period of one year.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:gYear </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="gYear" id="gYear"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:gYear</literal> is the period of one
calendar year (such as the year 2002); its lexical space follows the
ISO 8601 syntax for such periods (i.e.,
"YYYY") with an optional timezone.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The duration (one year) is fixed, and no calendars other than the
Gregorian are supported.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"2001"</literal>,
<literal>"2001+02:00"</literal>, <literal>"2001Z"</literal>,
<literal>"2001+00:00"</literal>, <literal>"-2001"</literal>, or
<literal>"-20000"</literal>. 
</para>

<para>The following values would be invalid: <literal>"01"</literal> (the
century part is missing) or <literal>"2001-12"</literal> (month parts
are forbidden).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77086">
<refmeta>
<refentrytitle>xsd:gYearMonth</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166140"><primary>xsd:gYearMonth type</primary></indexterm><refname>xsd:gYearMonth</refname>

<refpurpose>Period of one month.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:gYearMonth </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="gYearMonth" id="gYearMonth"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:gYearMonth</literal> is the period of
one calendar month (such as the month of February 2002); its lexical
space follows the ISO 8601 syntax for such periods (i.e.,
"YYYY-MM") with an optional
timezone.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The duration (one month) is fixed, and no calendars other than the
Gregorian are supported.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"2001-10"</literal>,
<literal>"2001-10+02:00"</literal>, <literal>"2001-10Z"</literal>,
<literal>"2001-10+00:00"</literal>, <literal>"-2001-10"</literal>, or
<literal>"-20000-04"</literal>. 
</para>

<para>The following values would be invalid: <literal>"2001"</literal> (the
month part is missing), <literal>"2001-13"</literal> (the month part
is out of range), <literal>"2001-13-26+02:00"</literal> (the month
part is out of range), or <literal>"01-10"</literal> (the century
part is missing).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77091">
<refmeta>
<refentrytitle>xsd:hexBinary</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166141"><primary>xsd:hexBinary type</primary></indexterm><refname>xsd:hexBinary</refname>

<refpurpose>Binary contents coded in hexadecimal.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:hexBinary </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
<emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="hexBinary" id="hexBinary"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:hexBinary</literal> is the set of all
binary contents; its lexical space is a simple coding of each octet
as its hexadecimal value.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>This datatype should not be confused with another encoding called
BinHex that is not supported by W3C XML Schema. Other popular binary
text encodings (such as uuXXcode, Quote Printable, BinHex, aencode,
or base85, to name few) are not supported by the W3C XML Schema.
</para>

<para>The expansion factor is high since each binary octet is coded as two
characters (i.e., four octets if the document is encoded with
UTF-16).
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>A UTF-8 XML header such as:</para>

<programlisting>"&lt;?xml version="1.0" encoding="UTF-8"?&gt;"</programlisting>


<para>encoded would be:</para>

<programlisting>"3f3c6d78206c657673726f693d6e3122302e20226e656f636964676e223d54552d4622383e3f"</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77096">
<refmeta>
<refentrytitle>xsd:ID</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166142"><primary>xsd:ID type</primary></indexterm><refname>xsd:ID</refname>

<refpurpose>Definition of unique identifiers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:NCName </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="ID" id="ID"&gt;
  &lt;xsd:restriction base="xsd:NCName"/&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The purpose of the <literal>xsd:ID</literal> datatype is to define
unique identifiers that are global to a document and emulate the ID
attribute type available in the XML DTDs.
</para>

<para>Unlike their DTD counterparts, W3C XML Schema ID datatypes can be
used to define not only attributes, but also simple element content.
</para>

<para>For both attributes and simple element content, the lexical domain of
these datatypes is the lexical domain of XML nonqualified names
(<literal>xsd:NCName</literal>).
</para>

<para>Identifiers defined using this datatype are global to a document and
provide a way to uniquely identify their containing element, whatever
its type and name is.
</para>

<para>The constraint added by this datatype beyond the
<literal>xsd:NCName</literal> datatype from which it is derived is
that the values of all the attributes and elements that have an ID
datatype in a document must be unique.
</para>

<para>Note that this datatype is laxer than the ID datatype from the DTD compatibility datatype library and does allow both using this datatypes for elements and defining multiple type assignment to attributes defined as ID depending on their location in the schema.</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Applications that need to maintain a level of compatibility with DTDs
should not use this datatype for elements but should reserve it for
attributes.
</para>

<para>The lexical domain (<literal>xsd:NCName</literal>) of this datatype
doesn't allow the definition of numerical
identifiers or identifiers containing whitespaces.
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;element name="book"&gt;
  &lt;element name="isbn">
    &lt;data type="xsd:int"/&gt;
  &lt;/element>
  &lt;element name="title">
    &lt;data type="xsd:string"/&gt;
  &lt;/element>
  &lt;element name="author-ref"&gt;
    &lt;attribute name="ref">
      &lt;data type="xsd:IDREF"/&gt;
    &lt;/attribute>
  &lt;/element&gt;
  &lt;element name="character-refs">
    &lt;data type="xsd:IDREFS"/&gt;
  &lt;/element&gt;
  &lt;attribute name="identifier">
    &lt;data type="xsd:ID"/&gt;
  &lt;/attribute>
&lt;/element&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77101">
<refmeta>
<refentrytitle>xsd:IDREF</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166143"><primary>xsd:IDREF type</primary></indexterm><refname>xsd:IDREF</refname>

<refpurpose>Definition of references to unique identifiers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:NCName </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:IDREFS </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="IDREF" id="IDREF"&gt;
  &lt;xsd:restriction base="xsd:NCName"/&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The <literal>xsd:IDREF</literal> datatype defines references to the
identifiers defined by the ID datatype and, therefore, emulates the
IDREF attribute type of the XML DTDs, even though it can be used for
simple content elements as well as for attributes.
</para>

<para>The lexical space of <literal>xsd:IDREF</literal> is, like the lexical
space of <literal>xsd:ID</literal>, nonqualified XML names (NCName).
</para>

<para>The constraint added by this datatype beyond the
<literal>xsd:NCName</literal> datatype from which it is derived is the
values of all the attributes and elements that have a
<literal>xsd:IDREF</literal> datatype must match an ID defined within
the same document.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Applications that need to maintain a level of compatibility with DTDs
should not use this datatype for elements but should reserve it for
attributes.
</para>

<para>The lexical domain (NCName) of this datatype doesn't
allow definition of numerical key references or references containing
whitespaces.
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;element name="book"&gt;
  &lt;element name="isbn">
    &lt;data type="xsd:int"/&gt;
  &lt;/element>
  &lt;element name="title">
    &lt;data type="xsd:string"/&gt;
  &lt;/element>
  &lt;element name="author-ref"&gt;
    &lt;attribute name="ref">
      &lt;data type="xsd:IDREF"/&gt;
    &lt;/attribute>
  &lt;/element&gt;
  &lt;element name="character-refs">
    &lt;data type="xsd:IDREFS"/&gt;
  &lt;/element&gt;
  &lt;attribute name="identifier">
    &lt;data type="xsd:ID"/&gt;
  &lt;/attribute>
&lt;/element&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77106">
<refmeta>
<refentrytitle>xsd:IDREFS</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166144"><primary>xsd:IDREFS type</primary></indexterm><refname>xsd:IDREFS</refname>

<refpurpose>Definition of lists of references to unique identifiers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:IDREF </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:whiteSpace </para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="IDREFS" id="IDREFS"&gt;
  &lt;xsd:restriction&gt;
    &lt;xsd:simpleType&gt;
      &lt;xsd:list&gt;
        &lt;xsd:simpleType&gt;
          &lt;xsd:restriction base="xsd:IDREF"/&gt;
        &lt;/xsd:simpleType&gt;
      &lt;/xsd:list&gt;
    &lt;/xsd:simpleType&gt;
    &lt;xsd:minLength value="1"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para><literal>xsd:IDREFS</literal> is derived as a list from
<literal>xsd:IDREF</literal> and, thus, represents
whitespace-separated lists of references to identifiers defined using
the ID datatype.
</para>

<para>The lexical space of <literal>xsd:IDREFS</literal> is the lexical
space of a list of <literal>xsd:NCName</literal> values with a minimum
length of one element (<literal>xsd:IDREFS</literal> cannot be empty
lists).
</para>

<para><literal>xsd:IDREFS</literal> emulates the
<literal>IDREFS</literal> attribute type of the XML DTDs, even
though it can be used to define simple content elements as well as
attributes.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Applications that need to maintain a level of compatibility with DTDs
should not use this datatype for elements but should reserve it for
attributes.
</para>

<para>The lexical domain (lists of <literal>xsd:NCName</literal>) of this
datatype doesn't allow definition of lists of
numerical key references or references containing whitespaces.
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;element name="book"&gt;
  &lt;element name="isbn">
    &lt;data type="xsd:int"/&gt;
  &lt;/element>
  &lt;element name="title">
    &lt;data type="xsd:string"/&gt;
  &lt;/element>
  &lt;element name="author-ref"&gt;
    &lt;attribute name="ref">
      &lt;data type="xsd:IDREF"/&gt;
    &lt;/attribute>
  &lt;/element&gt;
  &lt;element name="character-refs">
    &lt;data type="xsd:IDREFS"/&gt;
  &lt;/element&gt;
  &lt;attribute name="identifier">
    &lt;data type="xsd:ID"/&gt;
  &lt;/attribute>
&lt;/element&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77111">
<refmeta>
<refentrytitle>xsd:int</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166145"><primary>xsd:int type</primary></indexterm><refname>xsd:int</refname>

<refpurpose>32 bit signed integers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:long </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:short </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="int" id="int"&gt;
  &lt;xsd:restriction base="xsd:long"&gt;
    &lt;xsd:minInclusive value="-2147483648"/&gt;
    &lt;xsd:maxInclusive value="2147483647"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:int</literal> is the set of common
single size integers (32 bits), i.e., the integers between
-2147483648 and 2147483647, its lexical space allows any number of
insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

<para>-0 and +0 are considered equal, which is different from the behavior
of <literal>xsd:float</literal> and <literal>xsd:double</literal>.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"-2147483648"</literal>,
<literal>"0"</literal>, <literal>"-0000000000000000000005"</literal>,
or <literal>"2147483647"</literal>.
</para>

<para>Invalid values include <literal>"-2147483649"</literal> and
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77116">
<refmeta>
<refentrytitle>xsd:integer</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166146"><primary>xsd:integer type</primary></indexterm><refname>xsd:integer</refname>

<refpurpose>Signed integers of arbitrary length.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:nonPositiveInteger, xsd:long, xsd:nonNegativeInteger </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="integer" id="integer"&gt;
  &lt;xsd:restriction base="xsd:decimal"&gt;
    &lt;xsd:fractionDigits value="0" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:integer</literal> includes the set of
all the signed integers, with no restriction on range. Its lexical
space allows any number of insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

<para>-0 and +0 are considered equal, which is different from the behavior
of <literal>xsd:float</literal> and <literal>xsd:double</literal>.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values for <literal>xsd:integer</literal> include
<literal>"-123456789012345678901234567890"</literal>,
<literal>"2147483647"</literal>, <literal>"0"</literal>, or
<literal>"-0000000000000000000005"</literal>. 
</para>

<para>Invalid values include <literal>"1."</literal>,
<literal>"2.6"</literal>, and <literal>"A"</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77121">
<refmeta>
<refentrytitle>xsd:language</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166147"><primary>xsd:language type</primary></indexterm><refname>xsd:language</refname>

<refpurpose>RFC 1766 language codes.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:token </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="language" id="language"&gt;
  &lt;xsd:restriction base="xsd:token"&gt;
     &lt;xsd:pattern
      value="([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*"
      /&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical and value spaces of <literal>xsd:language</literal> are
the set of language codes defined by the RFC 1766.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Although the schema for schema defines a minimal test to perform
expressed as patterns (see the Definition), the lexical space is the
set of existing language codes.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Some valid values for this datatype are: <literal>"en"</literal>,
<literal>"en-US"</literal>, <literal>"fr"</literal>, or
<literal>"fr-FR"</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77126">
<refmeta>
<refentrytitle>xsd:long</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166148"><primary>xsd:long type</primary></indexterm><refname>xsd:long</refname>

<refpurpose>64 bit signed integers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:integer </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:int </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="long" id="long"&gt;
  &lt;xsd:restriction base="xsd:integer"&gt;
    &lt;xsd:minInclusive value="-9223372036854775808"/&gt;
    &lt;xsd:maxInclusive value="9223372036854775807"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:long</literal> is the set of common
double-size integers (64 bits), i.e., the integers between
-9223372036854775808 and 9223372036854775807; its lexical space
allows any number of insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values for <literal>xsd:long</literal> include
<literal>"-9223372036854775808"</literal>, <literal>"0"</literal>,
<literal>"-0000000000000000000005"</literal>, or
<literal>"9223372036854775807"</literal>. 
</para>

<para>Invalid values include <literal>"9223372036854775808"</literal> and
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77131">
<refmeta>
<refentrytitle>xsd:Name</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166149"><primary>xsd:Name type</primary></indexterm><refname>xsd:Name</refname>

<refpurpose>XML 1.O names.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:token </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:NCName </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="Name" id="Name"&gt;
  &lt;xsd:restriction base="xsd:token"&gt;
    &lt;xsd:pattern value="\i\c*"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical and value spaces of <literal>xsd:Name</literal> are the
tokens (<literal>NMTOKEN</literal>) that conform to the definition of
a name in XML 1.0.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Following XML 1.0, those names may contain colons
(":"), but no special meaning is
attached to these characters. Another datatype
(<literal>xsd:QName</literal>) should be used for qualified names when
they use namespaces prefixes.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"Snoopy"</literal>,
<literal>"CMS"</literal>, or <literal>"_1950-10-04_10:00"</literal>.
</para>

<para>Invalid values include <literal>"0836217462"</literal> (a
<literal>xsd:Name</literal> cannot start with a number) or
<literal>"bold,brash"</literal> (commas are forbidden).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77136">
<refmeta>
<refentrytitle>xsd:NCName</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166150"><primary>xsd:NCName type</primary></indexterm><refname>xsd:NCName</refname>

<refpurpose>Unqualified names.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:Name </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:ID, xsd:IDREF, xsd:ENTITY </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="NCName" id="NCName"&gt;
  &lt;xsd:restriction base="xsd:Name"&gt;
    &lt;xsd:pattern value="[\i-[:]][\c-[:]]*"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical and value spaces of <literal>xsd:NCName</literal> are the
names (<literal>Name</literal>) that conform to the definition of a
<literal>NCName</literal> in the Recommendation
"Namespaces in XML 1.0"&#8212;i.e.,
all the XML 1.0 names that do not contain colons
(":").
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>This datatype allows characters such as
"-" and may need additional
constraints to match the notion of name in your favorite programming
language or database system.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"Snoopy"</literal>,
<literal>"CMS"</literal>, <literal>"_1950-10-04_10-00"</literal>, or
<literal>"bold_brash"</literal>.
</para>

<para>Invalid values include <literal>"_1950-10-04:10-00"</literal> or
<literal>"bold:brash"</literal> (colons are forbidden).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77141">
<refmeta>
<refentrytitle>xsd:negativeInteger</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166151"><primary>xsd:negativeInteger type</primary></indexterm><refname>xsd:negativeInteger</refname>

<refpurpose>Strictly negative integers of arbitrary length.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:nonPositiveInteger </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="negativeInteger" id="negativeInteger"&gt;
  &lt;xsd:restriction base="xsd:nonPositiveInteger"&gt;
    &lt;xsd:maxInclusive value="-1"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:negativeInteger</literal> includes the
set of all the strictly negative integers (excluding zero), with no
restriction of range. Its lexical space allows any number of
insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values for <literal>xsd:negativeInteger</literal> include
<literal>"-123456789012345678901234567890"</literal>,
<literal>"-1"</literal>, or
<literal>"-0000000000000000000005"</literal>. 
</para>

<para>Invalid values include <literal>"0"</literal> or
<literal>"-1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77146">
<refmeta>
<refentrytitle>xsd:NMTOKEN</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166152"><primary>xsd:NMTOKEN type</primary></indexterm><refname>xsd:NMTOKEN</refname>

<refpurpose>XML 1.0 name token (NMTOKEN).
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:token </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:NMTOKENS </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="NMTOKEN" id="NMTOKEN"&gt;
  &lt;xsd:restriction base="xsd:token"&gt;
    &lt;xsd:pattern value="\c+"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical and value spaces of <literal>xsd:NMTOKEN</literal> are the
set of XML 1.0 "name tokens," i.e.,
tokens composed of characters, digits,
".",
":",
"-", and the characters defined by
Unicode, such as "combining" or
"extender".
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>This type is usually called a
"token."
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"Snoopy"</literal>,
<literal>"CMS"</literal>, <literal>"1950-10-04"</literal>, or
<literal>"0836217462"</literal>. 
</para>

<para>Invalid values include <literal>"brought</literal>
<literal>classical</literal> <literal>music</literal>
<literal>to</literal> <literal>the</literal>
<literal>Peanuts</literal> <literal>strip"</literal> (spaces are
forbidden) or <literal>"bold,brash"</literal> (commas are forbidden).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77151">
<refmeta>
<refentrytitle>xsd:NMTOKENS</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166153"><primary>xsd:NMTOKENS type</primary></indexterm><refname>xsd:NMTOKENS</refname>

<refpurpose>List of XML 1.0 name token (NMTOKEN).
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:NMTOKEN </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:whiteSpace </para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="NMTOKENS" id="NMTOKENS"&gt;
  &lt;xsd:restriction&gt;
    &lt;xsd:simpleType&gt;
      &lt;xsd:list&gt;
        &lt;xsd:simpleType&gt;
          &lt;xsd:restriction base="xsd:NMTOKEN"/&gt;
        &lt;/xsd:simpleType&gt;
      &lt;/xsd:list&gt;
    &lt;/xsd:simpleType&gt;
    &lt;xsd:minLength value="1"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para><literal>xsd:NMTOKENS</literal> is derived by list from
<literal>xsd:NMTOKEN</literal> and represents whitespace-separated
lists of XML 1.0 name tokens.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>None.</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"Snoopy"</literal>,
<literal>"CMS"</literal>, <literal>"1950-10-04"</literal>,
<literal>"0836217462 0836217463"</literal>, or
<literal>"brought</literal> <literal>classical</literal>
<literal>music</literal> <literal>to</literal> <literal>the</literal>
<literal>Peanuts</literal> <literal>strip"</literal> (note that, in
this case, the sentence is considered as a list of words).
</para>

<para>Invalid values include <literal>"brought</literal>
<literal>classical</literal> <literal>music</literal>
<literal>to</literal> <literal>the</literal>
<literal>"Peanuts"</literal> <literal>strip"</literal> (quotes are
forbidden) or <literal>"bold,brash"</literal> (commas are forbidden).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77156">
<refmeta>
<refentrytitle>xsd:nonNegativeInteger</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166154"><primary>xsd:nonNegativeInteger type</primary></indexterm><refname>xsd:nonNegativeInteger</refname>

<refpurpose>Integers of arbitrary length positive or equal to zero.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:integer </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:unsignedLong, xsd:positiveInteger </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger"&gt;
  &lt;xsd:restriction base="xsd:integer"&gt;
    &lt;xsd:minInclusive value="0"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:nonNegativeInteger</literal> includes
the set of all the integers greater than or equal to zero, with no
restriction of range. Its lexical space allows any number of
insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include
<literal>"+123456789012345678901234567890"</literal>,
<literal>"0"</literal>, <literal>"0000000000000000000005"</literal>,
or <literal>"2147483647"</literal>.
</para>

<para>Invalid values include <literal>"1."</literal> or
<literal>"-1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77161">
<refmeta>
<refentrytitle>xsd:nonPositiveInteger</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166155"><primary>xsd:nonPositiveInteger type</primary></indexterm><refname>xsd:nonPositiveInteger</refname>

<refpurpose>Integers of arbitrary length negative or equal to zero.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:integer </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:negativeInteger </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger"&gt;
  &lt;xsd:restriction base="xsd:integer"&gt;
    &lt;xsd:maxInclusive value="0"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:nonPositiveInteger</literal> includes
the set of all the integers less than or equal to zero, with no
restriction of range. Its lexical space allows any number of
insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include
<literal>"-123456789012345678901234567890"</literal>,
<literal>"0"</literal>, <literal>"-0000000000000000000005"</literal>,
or <literal>"-2147483647"</literal>.
</para>

<para>Invalid values include <literal>"-1."</literal> or
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77166">
<refmeta>
<refentrytitle>xsd:normalizedString</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166156"><primary>xsd:normalizedString type</primary></indexterm><refname>xsd:normalizedString</refname>

<refpurpose>Whitespace-replaced strings.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:token </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="normalizedString" id="normalizedString"&gt;
  &lt;xsd:restriction base="xsd:string"&gt;
    &lt;xsd:whiteSpace value="replace"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical space of <literal>xsd:normalizedString</literal> is
unconstrained (any valid XML character may be used), and its value
space is the set of strings after whitespace replacement (i.e., after
any occurrence of <literal>#x9</literal> (tab),
<literal>#xA</literal> (linefeed), and <literal>#xD</literal>
(carriage return) have been replaced by an occurrence of
<literal>#x20</literal> (space) without any whitespace collapsing).
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>This is the only datatype that performs whitespace replacement
without collapsing. When whitespaces are not significant,
<literal>xsd:token</literal> is preferred.
</para>

<para>This datatype corresponds to neither the XPath function
<literal>normalize-space( )</literal> (which performs whitespace
trimming and collapsing) nor to the DOM
"normalize" method (which is a
merge of adjacent text objects).
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>The value of the element:</para>

<programlisting>&lt;title lang="en"&gt;
  Being a Dog Is 
  a Full-Time Job
&lt;/title&gt;"</programlisting>


<para>is the string: <literal>"</literal> <literal>Being</literal>
<literal>a</literal> <literal>Dog</literal> <literal>Is</literal>
<literal>a</literal> <literal>Full-Time</literal>
<literal>Job</literal> <literal>"</literal>, where all the
whitespaces have been replaced by spaces if the title element is a
type <literal>xsd:normalizedString</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77171">
<refmeta>
<refentrytitle>xsd:NOTATION</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166157"><primary>xsd:NOTATION type</primary></indexterm><refname>xsd:NOTATION</refname>

<refpurpose>Emulation of the XML 1.0 feature.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:NOTATION </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
<emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="NOTATION" id="NOTATION"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>For W3C XML Schema, the value and lexical spaces of <literal>xsd:NOTATION</literal> are
references to notations declared though the
<literal>xsd:notation</literal> element. This element doesn't exist in Relax NG where this datatype can be seen as a synonym for <literal>xsd:QName</literal> with backward compatibility for W3C XML Schema.</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>Notations are very seldom used in real-world applications.</para>

<para>One cannot use <literal>xsd:notation</literal> directly, but must
derive it as shown in the Example.
</para>

</refsect1>
<refsect1>
<title>Example</title>

<programlisting>&lt;xsd:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt; 
  &lt;xsd:notation name="jpeg" public="image/jpeg"
    system="file:///usr/bin/xv"/&gt; 
  &lt;xsd:notation name="gif" public="image/gif"
    system="file:///usr/bin/xv"/&gt; 
  &lt;xsd:notation name="png" public="image/png"
    system="file:///usr/bin/xv"/&gt; 
  &lt;xsd:notation name="svg" public="image/svg"
    system="file:///usr/bin/xsmiles"/&gt; 
  &lt;xsd:notation name="pdf" public="application/pdf"
    system="file:///usr/bin/acroread"/&gt;
  &lt;xsd:simpleType name="graphicalFormat"&gt;
    &lt;xsd:restriction base="xsd:NOTATION"&gt;
      &lt;xsd:enumeration value="jpeg"/&gt;
      &lt;xsd:enumeration value="gif"/&gt;
      &lt;xsd:enumeration value="png"/&gt;
      &lt;xsd:enumeration value="svg"/&gt;
      &lt;xsd:enumeration value="pdf"/&gt;
    &lt;/xsd:restriction&gt;
  &lt;/xsd:simpleType&gt;
  &lt;xsd:element name="picture"&gt;
    &lt;xsd:complexType&gt;
      &lt;xsd:simpleContent&gt;
        &lt;xsd:extension base="xsd:base64Binary"&gt;
          &lt;xsd:attribute name="type" type="graphicalFormat"/&gt;
        &lt;/xsd:extension&gt;
      &lt;/xsd:simpleContent&gt;
    &lt;/xsd:complexType&gt;
  &lt;/xsd:element&gt;
&lt;/xsd:schema&gt;</programlisting>

</refsect1>
</refentry>

<refentry id="ch16-77176">
<refmeta>
<refentrytitle>xsd:positiveInteger</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166158"><primary>xsd:positiveInteger type</primary></indexterm><refname>xsd:positiveInteger</refname>

<refpurpose>Strictly positive integers of arbitrary length.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:nonNegativeInteger </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="positiveInteger" id="positiveInteger"&gt;
  &lt;xsd:restriction base="xsd:nonNegativeInteger"&gt;
    &lt;xsd:minInclusive value="1"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:positiveInteger</literal> includes the
set of the strictly positive integers (excluding zero), with no
restriction of range. Its lexical space allows any number of
insignificant leading zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include
<literal>"123456789012345678901234567890"</literal>,
<literal>"1"</literal>, or
<literal>"0000000000000000000005"</literal>. 
</para>

<para>Invalid values include <literal>"0"</literal> or
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77181">
<refmeta>
<refentrytitle>xsd:QName</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166159"><primary>xsd:QName type</primary></indexterm><refname>xsd:QName</refname>

<refpurpose>Namespaces in XML qualified names.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:QName </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
<emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="QName" id="QName"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical space of <literal>xsd:QName</literal> is the qualified
names per Namespace in XML, i.e., a local name (which is a
<literal>xsd:NCName</literal>) with an optional prefix (itself a
<literal>xsd:NCName</literal>), separated by a colon
(":"), where the prefix is declared
a namespace prefix in the scope of the element carrying the value.
Its value space comprises the pairs (namespace URI, local name) in
which the namespace URI is the URI associated to the prefix in the
namespace declaration.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>It is impossible to apply a pattern on the namespace URI.</para>

<para>The usage of <literal>QNames</literal> in elements and attributes is
controversial since it creates a dependency between the content of
the document and its markup. However, the official position of the
W3C doesn't discourage this practice.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>W3C XML Schema itself has already given us some examples of QNames.
When we wrote <literal>"&lt;xsd:attribute name="lang"
type="xsd:language"/&gt;"</literal>, the type attribute was a
<literal>xsd:QName</literal> and its value was the tuple
<literal>{"http://www.w3.org/2001/XMLSchema",</literal>
<literal>"language"}</literal> because the URI
<literal>"http://www.w3.org/2001/XMLSchema"</literal> had been
assigned to the prefix <literal>"xsd:"</literal>. If there had been no
namespace declaration for this prefix, the type attribute would have
been considered invalid.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77186">
<refmeta>
<refentrytitle>xsd:short</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166160"><primary>xsd:short type</primary></indexterm><refname>xsd:short</refname>

<refpurpose>32 bit signed integers.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:int </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:byte </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="short" id="short"&gt;
  &lt;xsd:restriction base="xsd:int"&gt;
    &lt;xsd:minInclusive value="-32768"/&gt;
    &lt;xsd:maxInclusive value="32767"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:short</literal> is the set of common
short integers (16 bits), i.e., the integers between -32768 and
32767; its lexical space allows any number of insignificant leading
zeros.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"-32768"</literal>,
<literal>"0"</literal>, <literal>"-0000000000000000000005"</literal>,
or <literal>"32767"</literal>.
</para>

<para>Invalid values include <literal>"32768"</literal> and
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77191">
<refmeta>
<refentrytitle>xsd:string</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166161"><primary>xsd:string type</primary></indexterm><refname>xsd:string</refname>

<refpurpose>Any string.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:normalizedString </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="string" id="string"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="preserve"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical and value spaces of <literal>xsd:string</literal> are the
set of all possible strings composed of any character allowed in a
XML 1.0 document without any treatment done on whitespaces.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>This is the only datatype that leaves all the whitespaces. When
whitespaces are not significant, <literal>xsd:token</literal> is
preferred.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>The value of the following element:</para>

<programlisting>&lt;title lang="en"&gt;
  Being a Dog Is 
  a Full-Time Job
&lt;/title&gt;</programlisting>


<para>is the full string <literal>"Being</literal> <literal>a</literal>
<literal>Dog</literal> <literal>Is</literal> <literal>a</literal>
<literal>Full-Time</literal> <literal>Job"</literal>, with all its
tabulations and CR/LF if the <literal>title</literal> element is a
<literal>xsd:string</literal> type .
</para>

</refsect1>
</refentry>

<refentry id="ch16-77196">
<refmeta>
<refentrytitle>xsd:time</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166162"><primary>xsd:time type</primary></indexterm><refname>xsd:time</refname>

<refpurpose>Point in time recurring each day.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:anySimpleType </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:time </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive,
xsd:minInclusive, xsd:pattern, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="time" id="time"&gt;
  &lt;xsd:restriction base="xsd:anySimpleType"&gt;
    &lt;xsd:whiteSpace value="collapse" fixed="true"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical space of <literal>xsd:time</literal> is identical to the
time part of <literal>xsd:dateTime</literal>
("hh:mm:ss[Z|(+|-)hh:mm]"); and its
value space is the set of points in time recurring daily.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The period (one day) is fixed and no calendars other than the
Gregorian are supported.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"21:32:52"</literal>,
<literal>"21:32:52+02:00"</literal>, <literal>"19:32:52Z"</literal>,
<literal>"19:32:52+00:00"</literal>, or
<literal>"21:32:52.12679"</literal>.
</para>

<para>Invalid values include <literal>"21:32"</literal> (all the parts must
be specified), <literal>"25:25:10"</literal> (the hour part is out of
range), <literal>"-10:00:00"</literal> (the hour part is out of
range), or <literal>"1:20:10"</literal> (all the digits must be
supplied).
</para>

</refsect1>
</refentry>

<refentry id="ch16-77201">
<refmeta>
<refentrytitle>xsd:token</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166163"><primary>xsd:token type</primary></indexterm><refname>xsd:token</refname>

<refpurpose>Whitespace-replaced and collapsed strings.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:normalizedString </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:string </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:language, xsd:NMTOKEN, xsd:Name </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, xsd:length, xsd:maxLength, xsd:minLength, xsd:pattern,
xsd:whiteSpace
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="token" id="token"&gt;
  &lt;xsd:restriction base="xsd:normalizedString"&gt;
    &lt;xsd:whiteSpace value="collapse"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The lexical and value spaces of <literal>xsd:token</literal> are the
sets of all the strings after whitespace replacement&#8212;i.e.,
after any occurrence of <literal>#x9</literal> (tab),
<literal>#xA</literal> (linefeed), and <literal>#xD</literal>
(carriage return) is replaced by an occurrence of
<literal>#x20</literal> (space) and collapsing (i.e., the contiguous
occurrences of spaces are replaced by a single space, and leading and
trailing spaces are removed).
</para>

<para>More simply said, <literal>xsd:token</literal> is the most appropriate
datatype to use for strings that do not care about whitespaces.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The name <literal>xsd:token</literal> is misleading since whitespaces
are allowed within <literal>xsd:token</literal>.
<literal>xsd:NMTOKEN</literal> is the type corresponding to what is
usually called "tokens."
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>The element:</para>

<programlisting>&lt;title lang="en"&gt;
  Being a Dog Is 
  a Full-Time Job
&lt;/title&gt;</programlisting>


<para>is a valid <literal>xsd:token</literal> and its value is the string
<literal>"Being</literal> <literal>a</literal> <literal>Dog</literal>
<literal>Is</literal> <literal>a</literal>
<literal>Full-Time</literal> <literal>Job"</literal>, where all the
whitespaces have been replaced by spaces, leading and trailing spaces
have been removed and contiguous sequences of spaces have been
replaced by single spaces.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77206">
<refmeta>
<refentrytitle>xsd:unsignedByte</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166164"><primary>xsd:unsignedByte type</primary></indexterm><refname>xsd:unsignedByte</refname>

<refpurpose>Unsigned value of 8 bits.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:unsignedShort </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>none</para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="unsignedByte" id="unsignedBtype"&gt;
  &lt;xsd:restriction base="xsd:unsignedShort"&gt;
    &lt;xsd:maxInclusive value="255"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:unsignedByte</literal> is the integers
between 0 and 255, i.e., the unsigned values that can fit in a word
of 8 bits. Its lexical space allows an optional
"+" sign and leading zeros before
the significant digits.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The lexical space does not allow values expressed in other numeration
bases (such as hexadecimal, octal, or binary).
</para>

<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"255"</literal>,
<literal>"0"</literal>, <literal>"+0000000000000000000005"</literal>,
or <literal>"1"</literal>.
</para>

<para>Invalid values include <literal>"-1"</literal> and
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77211">
<refmeta>
<refentrytitle>xsd:unsignedInt</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166165"><primary>xsd:unsignedInt type</primary></indexterm><refname>xsd:unsignedInt</refname>

<refpurpose>Unsigned integer of 32 bits.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:unsignedLong </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:unsignedShort </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="unsignedInt" id="unsignedInt"&gt;
  &lt;xsd:restriction base="xsd:unsignedLong"&gt;
    &lt;xsd:maxInclusive value="4294967295"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:unsignedInt</literal> is the integers
between 0 and 4294967295, i.e., the unsigned values that can fit in a
word of 32 bits. Its lexical space allows an optional
"+" sign and leading zeros before
the significant digits.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"4294967295"</literal>,
<literal>"0"</literal>, <literal>"+0000000000000000000005"</literal>,
or <literal>"1"</literal>.
</para>

<para>Invalid values include <literal>"-1"</literal> and
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77216">
<refmeta>
<refentrytitle>xsd:unsignedLong</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166166"><primary>xsd:unsignedLong type</primary></indexterm><refname>xsd:unsignedLong</refname>

<refpurpose>Unsigned integer of 64 bits.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:nonNegativeInteger </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:unsignedInt </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="unsignedLong" id="unsignedLong"&gt;
  &lt;xsd:restriction base="xsd:nonNegativeInteger"&gt;
    &lt;xsd:maxInclusive value="18446744073709551615"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:unsignedLong</literal> is the integers
between 0 and 18446744073709551615, i.e., the unsigned values that
can fit in a word of 64 bits. Its lexical space allows an optional
"+" sign and leading zeros before
the significant digits.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"18446744073709551615"</literal>,
<literal>"0"</literal>, <literal>"+0000000000000000000005"</literal>,
or <literal>"1"</literal>.
</para>

<para>Invalid values include <literal>"-1"</literal> and
<literal>"1."</literal>.
</para>

</refsect1>
</refentry>

<refentry id="ch16-77221">
<refmeta>
<refentrytitle>xsd:unsignedShort</refentrytitle>
</refmeta>

<refnamediv>
<indexterm id="IXT-16-166167"><primary>xsd:unsignedShort type</primary></indexterm><refname>xsd:unsignedShort</refname>

<refpurpose>Unsigned integer of 16 bits.
</refpurpose>
</refnamediv>

<refsect1>
<title>Derived from:</title>


<para>xsd:unsignedInt </para>

</refsect1>
<refsect1>
<title>Primary:</title>


<para>xsd:decimal </para>

</refsect1>
<refsect1>
<title>Known subtypes:</title>


<para>xsd:unsignedByte </para>

</refsect1>
<refsect1>
<title>Facets:</title>


<para>xsd:enumeration, <emphasis>xsd:fractionDigits</emphasis>,
xsd:maxExclusive, xsd:maxInclusive, xsd:minExclusive, xsd:minInclusive,
xsd:pattern, xsd:totalDigits, <emphasis>xsd:whiteSpace</emphasis>
</para>

</refsect1>
<refsynopsisdiv>
<synopsis>
&lt;xsd:simpleType name="unsignedShort" id="unsignedShort"&gt;
  &lt;xsd:restriction base="xsd:unsignedInt"&gt;
    &lt;xsd:maxInclusive value="65535"/&gt;
  &lt;/xsd:restriction&gt;
&lt;/xsd:simpleType&gt;
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>


<para>The value space of <literal>xsd:unsignedShort</literal> is the
integers between 0 and 65535, i.e., the unsigned values that can fit
in a word of 16 bits. Its lexical space allows an optional
"+" sign and leading zeros before
the significant digits.
</para>

</refsect1>
<refsect1>
<title>Restrictions</title>


<para>The decimal point (even when followed only by insignificant zeros) is
forbidden.
</para>

</refsect1>
<refsect1>
<title>Example</title>


<para>Valid values include <literal>"65535"</literal>,
<literal>"0"</literal>, <literal>"+0000000000000000000005"</literal>,
or <literal>"1"</literal>.
</para>

<para>Invalid values include <literal>"-1"</literal> and
<literal>"1."</literal><indexterm id="IXTR3-0" class="endofrange" startref="xmlschema-IDXTERM-1116"/> <indexterm id="IXTR3-1" class="endofrange" startref="xmlschema-IDXTERM-1117"/>. 
</para>



</refsect1>
</refentry>
</chapter>
